package model.bo;

import java.util.Date;
import java.util.List;

import model.bean.Curso;
import model.bean.Matricula;
import model.bean.Modulo;
import model.bean.Professor;
import model.bean.Turma;
import model.persistencia.dao.CursoDAO;
import model.persistencia.dao.MatriculaDAO;
import model.persistencia.dao.ModuloDAO;
import model.persistencia.dao.ProfessorDAO;
import model.persistencia.dao.TurmaDAO;

public class AcademicoBO {
	private static ProfessorDAO daoProfessor;
	private static CursoDAO daoCurso;
	private static ModuloDAO daoModulo;
	private static TurmaDAO daoTurma;
	private static MatriculaDAO daoMatricula;

	public AcademicoBO(){
		if(daoProfessor == null)
			daoProfessor = new ProfessorDAO();
		if(daoCurso == null)
			daoCurso = new CursoDAO();
		if(daoModulo == null)
			daoModulo = new ModuloDAO();
		if(daoTurma == null)
			daoTurma = new TurmaDAO();
		if(daoMatricula == null)
			daoMatricula = new MatriculaDAO();
	}
	
	public List<Professor> getProfessores(){
		return daoProfessor.list();
	}
	
	public Professor getProfessor(Professor professor){
		return daoProfessor.load(professor.getId());
	}
	
	public List<Curso> getCursos(){
		return daoCurso.list();
	}
	
	public Curso getCurso(Curso curso){
		return daoCurso.load(curso.getId());
	}
	
	public List<Modulo> getModulos(Curso curso){
		return daoModulo.getModulos(curso);
	}
	
	public Modulo getModulo(Modulo modulo){
		return daoModulo.load(modulo.getId());
	}
	
	public List<Turma> getTurmas(Professor professor, Curso curso, Modulo modulo, Date dataTermino){
		return daoTurma.getTurmas(professor, curso, modulo, dataTermino);
	}
	
	public Turma getTurma(Turma turma){
		return daoTurma.load(turma.getId());
	}
	
	public List<Matricula> getMatriculaAlunosTurma(Turma turma){
		return daoMatricula.getAlunosSemIndicacao(turma);
	}
	
	public List<Matricula> getMatriculaAlunosIndicados(Turma turma){
		return daoMatricula.getAlunosComIndicacao(turma);
	} 
}
